import { defineStore } from 'pinia'
import { ref, computed } from 'vue'

export const useMainAppStore = defineStore('mainApp', () => {
  // 状态
  const appName = ref('tds-app-main')
  const version = ref('1.0.0')
  const subApps = ref([
    {
      name: 'tds-ec-web',
      entry: '//localhost:9092',
      activeRule: '/exp',
      status: 'registered'
    }
  ])
  const currentSubApp = ref('')
  const loading = ref(false)

  // 计算属性
  const subAppCount = computed(() => subApps.value.length)
  
  const appInfo = computed(() => ({
    name: appName.value,
    version: version.value,
    subAppCount: subAppCount.value,
    currentSubApp: currentSubApp.value
  }))

  // 方法
  const setCurrentSubApp = (appName) => {
    currentSubApp.value = appName
  }

  const setLoading = (status) => {
    loading.value = status
  }

  const addSubApp = (subApp) => {
    subApps.value.push(subApp)
  }

  const removeSubApp = (appName) => {
    const index = subApps.value.findIndex(app => app.name === appName)
    if (index > -1) {
      subApps.value.splice(index, 1)
    }
  }

  const getSubApp = (appName) => {
    return subApps.value.find(app => app.name === appName)
  }

  return {
    // 状态
    appName,
    version,
    subApps,
    currentSubApp,
    loading,
    
    // 计算属性
    subAppCount,
    appInfo,
    
    // 方法
    setCurrentSubApp,
    setLoading,
    addSubApp,
    removeSubApp,
    getSubApp
  }
}) 